Various xentrace tweaks. Should perform better now. May still need more work.
Let me know if you have problems with it.
-#0x00010000 CPU%(cpu)d %(tsc).6f sched_add_domain(0x%(3)08x) [ dom id = 0x%(1)x%(2)08x ]
-#0x00010001 CPU%(cpu)d %(tsc).6f sched_rem_domain(0x%08(3)x) [ dom id = 0x%(1)x%(2)08x ]
-#0x00010002 CPU%(cpu)d %(tsc).6f __wake_up(0x%(3)08x) [ dom id = 0x%(1)x%(2)08x ]
-#0x00010003 CPU%(cpu)d %(tsc).6f do_block() [ current = 0x%(2)08x ]
-#0x00010004 CPU%(cpu)d %(tsc).6f do_yield() [ current = %(2)08x ]
-#0x00010005 CPU%(cpu)d %(tsc).6f do_set_timer_op(0x%(4)08x, 0x%(5)08x) [ current = 0x%(3)08x ]
-#0x00010006 CPU%(cpu)d %(tsc).6f sched_ctl(0x%(1)08x)
-#0x00010007 CPU%(cpu)d %(tsc).6f sched_adjdom(params) [ dom id = 0x%(1)x%(2)08x ]
-#0x00010008 CPU%(cpu)d %(tsc).6f __reschedule(0x%(3)08x) [ dom id = 0x%(1)x%(2)08x ]
-#0x00010009 CPU%(cpu)d %(tsc).6f switching to task_struct 0x%(1)08x [ dom id = 0x%(1)x ]
-#0x0001000A CPU%(cpu)d %(tsc).6f s_timer_fn(unused)
-#0x0001000B CPU%(cpu)d %(tsc).6f t_timer_fn(unused)
-#0x0001000C CPU%(cpu)d %(tsc).6f dom_timer_fn(data)
-#0x0001000D CPU%(cpu)d %(tsc).6f fallback_timer_fn(unused)
+0x00010000 CPU%(cpu)d %(tsc).6f sched_add_domain(0x%(3)08x) [ dom id = 0x%(2)08x ]
+0x00010001 CPU%(cpu)d %(tsc).6f sched_rem_domain(0x%08(3)x) [ dom id = 0x%(2)08x ]
+0x00010002 CPU%(cpu)d %(tsc).6f __wake_up(0x%(3)08x) [ dom id = 0x%(2)08x ]
+0x00010003 CPU%(cpu)d %(tsc).6f do_block() [ current = 0x%(2)08x ]
+0x00010004 CPU%(cpu)d %(tsc).6f do_yield() [ current = %(2)08x ]
+0x00010005 CPU%(cpu)d %(tsc).6f do_set_timer_op(0x%(4)08x, 0x%(5)08x) [ current = 0x%(3)08x ]
+0x00010006 CPU%(cpu)d %(tsc).6f sched_ctl(0x%(1)08x)
+0x00010007 CPU%(cpu)d %(tsc).6f sched_adjdom(params) [ dom id = 0x%(2)08x ]
+0x00010008 CPU%(cpu)d %(tsc).6f __reschedule(0x%(3)08x) [ dom id = 0x(2)08x ]
+0x00010009 CPU%(cpu)d %(tsc).6f switching to task_struct 0x%(1)08x [ dom id = 0x%(1)x ]
+0x0001000A CPU%(cpu)d %(tsc).6f s_timer_fn(unused)
+0x0001000B CPU%(cpu)d %(tsc).6f t_timer_fn(unused)
+0x0001000C CPU%(cpu)d %(tsc).6f dom_timer_fn(data)
+0x0001000D CPU%(cpu)d %(tsc).6f fallback_timer_fn(unused)
0x00020008 CPU%(cpu)d %(tsc).6f enter: dom0_create_dom ( )
/* printf("XX%d: cons=%ld head=%ld %p\n", i,
cons[i], meta[i]->head, data[i] + (cons[i] % size_in_recs) );
*/
- while( cons[i] < meta[i]->head )
+ while( cons[i] != meta[i]->head )
{
/*
if( (cons[i] % 6 ) == 0 )
/* opt_pdb: Name of serial port for Xen pervasive debugger (and enable pdb) */
unsigned char opt_pdb[10] = "none";
/* opt_tbuf_size: trace buffer size (in pages) */
-unsigned int opt_tbuf_size = 1;
+unsigned int opt_tbuf_size = 10;
/* opt_sched: scheduler - default to Borrowed Virtual Time */
char opt_sched[10] = "bvt";
/* opt_physdev_dom0_hide: list of PCI slots to hide from domain 0. */
#define TRC_SCHED_DOM_TIMER_FN 0x0001000C
#define TRC_SCHED_FALLBACK_TIMER_FN 0x0001000D
-#define _HIGH32(_x) (_x >> 32)
-#define _LOW32(_x) ((u32)_x )
-
/* Various timer handlers. */
static void s_timer_fn(unsigned long unused);
static void t_timer_fn(unsigned long unused);
SCHED_OP(add_task, d);
- TRACE_3D(TRC_SCHED_DOM_ADD, _HIGH32(d->domain), _LOW32(d->domain), d);
+ TRACE_2D(TRC_SCHED_DOM_ADD, d->domain, d);
}
void sched_rem_domain(struct domain *d)
{
rem_ac_timer(&d->timer);
SCHED_OP(rem_task, d);
- TRACE_3D(TRC_SCHED_DOM_REM, _HIGH32(d->domain), _LOW32(d->domain), d);
+ TRACE_2D(TRC_SCHED_DOM_REM, d->domain, d);
}
void init_idle_task(void)
if ( likely(domain_runnable(d)) && likely(!__task_on_runqueue(d)) )
{
- TRACE_3D(TRC_SCHED_WAKE, _HIGH32(d->domain), _LOW32(d->domain), d);
+ TRACE_2D(TRC_SCHED_WAKE,d->domain, d);
SCHED_OP(wake_up, d);
#ifdef WAKE_HISTO
p->wokenup = NOW();
add_ac_timer(&p->timer);
}
- TRACE_5D(TRC_SCHED_SET_TIMER, _HIGH32(p->domain), _LOW32(p->domain),
- p, timeout_hi, timeout_lo);
+ TRACE_4D(TRC_SCHED_SET_TIMER, p->domain, p, timeout_hi, timeout_lo);
return 0;
}
if( p == NULL )
return -ESRCH;
- TRACE_2D(TRC_SCHED_ADJDOM, _HIGH32(p->domain), _LOW32(p->domain));
+ TRACE_1D(TRC_SCHED_ADJDOM, p->domain);
SCHED_OP(adjdom, p, cmd);
buf->head_ptr++;
buf->head++;
- if ( buf->head_ptr == (buf->vdata + (buf->size-1)) )
+ if ( buf->head_ptr == (buf->vdata + buf->size) )
buf->head_ptr = buf->vdata;
local_irq_restore(flags);